package com.wjh.rules.interfaces;

import com.wjh.rules.common.EngineResponse;
import com.wjh.rules.common.RuleEntity;

import java.util.List;
import java.util.Map;

/**
 * @ClassName LessRuleEngine
 * @Description: 规则引擎接口
 * @Author wjh
 * @Date 2020年6月19日
 */
public interface LessRuleEngine {

    /**
     * 执行规则引擎成功
     *
     * @param fact
     * @return
     */
    EngineResponse fire(Map<String, Object> fact);

    /**
     * 执行规则引擎失败
     *
     * @param fact
     * @return
     */
    EngineResponse fireFail(Map<String, Object> fact);

    /**
     * 从规则池移除一个规则
     *
     * @param ruleId
     * @return
     */
    EngineResponse del(String ruleId);

    /**
     * 添加一个规则到规则池
     *
     * @param ruleEntity
     * @return
     */
    EngineResponse add(RuleEntity ruleEntity);

    /**
     * 添加多个规则到规则池
     *
     * @param ruleEntitys
     * @return
     */
    EngineResponse addAll(List<RuleEntity> ruleEntitys);


    /**
     * 获取一个规则
     *
     * @param ruleId
     * @return
     */
    EngineResponse get(String ruleId);

    /**
     * 更新一个规则
     *
     * @param ruleEntity
     * @return
     */
    EngineResponse update(RuleEntity ruleEntity);

    /**
     * 获取整个资源池（里面都是规则啦）
     *
     * @return
     */
    EngineResponse getRulePool();


}
